package yawning.mew.character;

import java.util.ArrayList;
import java.util.List;

import yawning.mew.equipment.EquipSet;

public abstract class ExternalToonBuilder {
	public ExternalToonBuilder() {
		mProgressCallbacks = new ArrayList<ToonBuilderProgressCallback>();
	}

	protected List<ToonBuilderProgressCallback> mProgressCallbacks;

	@SuppressWarnings("serial")
	public class ToonBuildException extends Exception {
		ToonBuildException(Exception e) {
			super(e);
		}

		ToonBuildException(String s) {
			super(s);
		}
	}

	public interface ToonBuilderProgressCallback {
		public boolean onProgress(String message);
	}

	public void addProgressCallback(ToonBuilderProgressCallback fn) {
		mProgressCallbacks = new ArrayList<ToonBuilderProgressCallback>();
	}

	public abstract Toon build() throws ToonBuildException;
	public abstract EquipSet getEquipSet();
	public abstract int getCharacterSheetStamina();
	public abstract int getCharacterSheetParryRating();
	public abstract int getCharacterSheetAttackPower();
	public abstract int getCharacterSheetArmor();
}
